|
|
|
|
|
|
|
|
|
- KRUPTAR
ДЛЯ ЧАЙНИКОВ
- Я попытаюсь познакомить вас с это замечательной прогой!
- Для этого нам понадобится:
- 1. Kruptar (собственно)
- 2. Любой Hex-редактор
- 3. Знание пойнтеров
- 4. Калькулятор с поддержкой Hex (подойдет стандартный Win
калькулятор)
- 5. Немножко терпения
- Я покажу на примере игры Cristalis (GameBoyColor)
- ! Я
рассматриваю случай, когда у нас есть все таблицы, ром с перерисованными
шрифтами, и мы знаем расположение и значение пойнтеров.
- ! Еще
нюанс! На время написания доки версия Kruptar’а была 6.0.5.6 Я
не могу ручаться за соответствие доки с более поздней версией.
Но если программа претерпит серьезные изменения, я постараюсь
обновить данный хелп.
- Открываем Kruptar!
- Что мы видим?
- Мы видим окошки, что характерно для большинства программ Djinn’а.
- Если Вас это не смущает, то продолжим…
- Нажимаем на иконку Создать новый проект
или просто нажимаем Ctrl+N.
- Откроется окошко, где Вам предлагают задать программе оригинальный
(английский или японский) РОМ и изменяемый (то есть с перерисованными
шрифтами).
- Теперь высветилась иконка Добавить группу
(горячая клавиша Ctrl+G).
- Нажав на нее, увидим окошко, спрашивающее, будем ли мы использовать
пойнтеры в переводе. Уважающий себя переводчик (РОМхакер, как
хотите) выберет Да, т.к. очень сложно, не используя
пойнтеры, сделать качественный перевод.
- Подробно рассмотрим окошко Новая группа (с пойнтерами):
- 1. Таблица для оригинального
ROM’а
- Выберем английскую (или японскую) таблицу.
- 2. Таблица для изменяемого
ROM’а
- Выберем русскую таблицу (мы на какой язык переводим?)
- 3. Размер пойнтера.
- Пойнтеры бывают разные, двух-, трех-, и четырехбайтные.
- Ну вы это знаете (см. первый восклицательный знак)
- 4. Кратность.
- При пересчёте, каждый пойнтер будет кратным одному из выбранных
значений (1, 2, 4, 8). Кратность на 2, 4 и 8 используется только
в некоторых играх для GBA.
- 5. Тип.
- а) Normal - ничего необычного
- б) PunType - игра Punisher, The (U).nes
- в) AutoStart - используем, если Разница
смещений равна началу блока пойнтеров
- 6. Интервал.
- Бывают такие случаи, когда пойнтеры идут не друг за другом,
а между ними стоят посторонние байты. Здесь и надо указать тот
промежуток, который занимают эти байты между пойнтерами.
- 7. Motorola.
- Ставим галочку, если эта консоль на процессоре Motorola.
- Подробнее о процессорах консолей вы можете прочитать,
- например, на http://tv-games.ru.
- У нас консоль GameBoy, поэтому не ставим галочку!
- 8. Signed.
- Пойнтеры типа signed int (c++) или integer (pascal/delphi),
- то есть они могут указывать как вперёд от начала отсчёта, так
и назад.
- 9. Метод хранения текста.
- Программа поддерживает 7 методов.
- а) Текст + /
- Текст, заканчивающийся каким-либо байтом (часто 00 или FF).
- (Используется в большинстве игр и программ)
- б) Длина (1 байт) + Текст
- Текст, начинающийся с байта, обозначающего количество символов.
- (Часто используется в играх для NES)
- в) Длина (1 байт) + Текст + /
- Текст, начинающийся с байта, обозначающего количество символов.
Должен заканчиваться каким-либо байтом. (Используется в игре Raf
World для NES)
- г) Длина (1 байт) + 1-я строка + Длина (1 байт) + 2-я строка
- Две строки метода б. (Используется в игре The
Terminator для NES)
- д) Кол-во строк (2 байта) + 1-я строка + / + ... + n-я строка
+ /
- Несколько строк метода а, количество которых указывается в первых
двух байтах.
- (Используется в игре Pirates! Gold для Sega)
- е) Длина (1 байт) + Х (1 байт) + Данные + Текст
- Используется в игре Magical Hat no Buttobi Turbo! Daibouken
(Sega).
- ж) Special
- Пойнтеры, указывающие на 2-х байтные пойнтеры,
- указывающие, в свою очередь, на текст метода а.
- 10. Разница смещений.
-
- Это разница между адресом начала фразы и пойнтером этой фразы.
- Рассмотрим поподробнее.
- Откроем ром в hex-редакторе (я использую GoldFinger) и найдем
там текст.
-
Я выделил красным прямоугольником три пункта:
- 1. Как видно, курсор стоит на начале строки (на букве Т).
- Её адрес я выделил Offset: 1A3032
- 2. Я выделил пойнтер этой фразы в текстовой части GoldFinger’a.
- 3. Я выделил пойнтер этой фразы в кодовой части GoldFinger’a.
- Его значение – 3270
- Начинаем считать: Разница смещений =
- 1A3032 (адрес начала строки) – 7032
(перевернутое значение 3270) = 19С000
- Значит, в строке Разница смещений пишем h0019С000
!Если значение пойнтера (ptr)
больше адреса начала строки (str), то в калькуляторах
Win95/98/ME вычисляется так:((ptr - str)
xor FFFFFFFF) + 1
- 11. Кодировка.
- ANSI – это стандартная Win кодировка, если вы переводите
с английского, то выбирайте ее.
- Shift-JIS – нужна, если вы переводите с
японского языка.
- 12. Начальное
смещение.
- Это адрес первого байта того места в ROM’е, в котором и будет
лежать Ваш переведенный текст. Обычно это место, занимаемое английским
(японским) текстом + иногда добавляют свободное место в ROM’е,
находящееся неподалеку. Про этот нюанс Вы тоже знаете, Вы же читали
о размерах пойнтеров и их свойствах.
- 13. Конечное смещение.
- А это адрес последнего байта.
- 14. Блоки
для текста
- Здесь будет список промежутков, которые Вы выделили под текст.
- ! Не
забудьте нажать кнопку >>, чтобы добавить
промежуток.
- Вообще, я предпочитаю не указывать здесь
эти промежутки,
- а указать их в окошке Новый элемент.
- Вот результат:
-
Нажав ОК, мы увидим, что в окошке Элементы проекта появилась группа.
- В этой группе зафиксированы все данные, выбранные в окне Новая
группа,
- кроме блоков для текста (их всегда можно изменить).
- Теперь мы можем добавлять сюда текстовые блоки (элементы) с
выбранными данными.
- Нажмем Добавить элемент
(Ctrl+Alt+A)
- Появилось окошко Новый элемент.
- Здесь мы можем выбрать другую таблицу(если это нужно), добавить
еще места под текст и, самое главное, указать местонахождение
пойнтеров!
- В поле Начало блока пойнтеров введем адрес первого байта
первого пойнтера, а в поле Конец блока пойнтеров введем
адрес последнего байта последнего пойнтера.
-
- Ура!!! Появился текст, который Вы сможете перевести!
- ! Если вместо текста появилась какая-то
белиберда, то Вы, возможно, перепутали адреса или неправильно
высчитали Разницу смещений.
- Часто, особенно в RPG’шках, в роме много блоков текста, и у
них бывает различная Разница смещений. Тогда можно разложить
блоки по группам с одинаковой Разницей смещения, причем
блоков и групп может быть сколько угодно (то есть можно в одном
проекте разложить весь текст игры).
- Вот такая вот картина у меня получилась:
-
Весь текст в одном проекте.
- И не надо открывать тысячи файлов!
- Вы можете сохранять перевод, не вставляя его в файл, что тоже
очень удобно.
- Если Вы захотите посмотреть, что же у вас получается, то для
начала нажмите кнопку
(F9), чтобы вставить текст из одной группы, или
(Ctrl+F9), чтобы вставить текст из всех групп сразу.
- Есть еще немного «примочек», программы, такие, как Прогресс
перевода, Настройка эмулятора для запуска игры прямо из Kruptar’а,
Hex-редактор и др, но думаю, с этим вы разберетесь сами.
- Спасибо, что дочитали до конца!
- Написал Delex
- delex@rambler.ru
- Дополнил, поправил Djinn
- magicdjinn@narod.ru
|
|
|
|
|
|
|